﻿using System;
using System.Collections.Generic;

namespace Nomo.Unity.WebRequestModule
{
    /// <summary>
    /// Unity 网络请求参数。
    /// </summary>
    /// <typeparam name="T">Unity 网络请求结果。</typeparam>
    public struct UnityWebRequestArgs<T> where T : UnityWebRequestResult
    {
        /// <summary>
        /// 统一资源标识符。
        /// </summary>
        public string Uri;

        /// <summary>
        /// 在成功时要执行的方法。
        /// </summary>
        public Action<T> Succeeded;

        /// <summary>
        /// 在失败时要执行的方法。
        /// </summary>
        public Action<T> Failed;

        private int _timeout;

        /// <summary>
        /// 超时时长。请求会在达到此时长并且未完成时放弃操作。如果为 0 ，则不启用超时，未完成的请求会一直进行或等待服务器响应。
        /// </summary>
        public int Timeout { get => _timeout; set => _timeout = value >= 0 ? value : 0; }

        /// <summary>
        /// 存放了 POST 请求表单的所有“字段-值”对的序列。
        /// </summary>
        public IEnumerable<(object fieldName, object value)> PostFormArgs;
    }
}
